package com.seven.restaurant.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.seven.restaurant.entity.po.UserPO;
import com.seven.restaurant.entity.request.LoginRequest;
import com.seven.restaurant.entity.vo.UserDetailsVO;
import com.seven.restaurant.exception.GlobalException;
import com.seven.restaurant.exception.InfoCode;

import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author BaiBan
 * @since 2022-07-16
 */
public interface UserService extends IService<UserPO> {

    /**
     * 登录
     * @param loginRequest {@link LoginRequest}
     * @return 用户id (凭证)
     */
    Long login(LoginRequest loginRequest) throws GlobalException;

    /**
     * 注册
     * @param user {@link UserPO}
     * @return 注册是否成功
     */
    Long register(UserPO user) throws GlobalException;

    /**
     * 用户详情
     * @param id 用户主键
     * @return 用户详情
     */
    UserDetailsVO details(Integer id) throws GlobalException;

    /**
     * 用户列表
     * @param current 页码
     * @return 分页结果
     */
    IPage<UserDetailsVO> list(Integer current);

    /**
     * 按照用户删除id
     * @param id 编号
     */
    boolean delete(Integer id) throws GlobalException;

    /**
     * 按照用户id修改
     * @param user
     * @return
     */
    boolean update(UserDetailsVO user);
}
